Micron Document
<!DOCTYPE html>
<html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-0 vector-toc-not-available vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-0 skin-theme-clientpref-day vector-sticky-header-enabled" lang="de" dir="ltr"><head>
<meta charset="UTF-8">
<title>SQLAlchemy</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" href="./_res_/favicon.png">
<link rel="canonical" href="https://de.wikipedia.org/wiki/SQLAlchemy"> <link href="./_mw_/ext.pygments.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.wikimediamessages.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link href="./_mw_/ext.gadget.citeRef.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.defaultPlainlinks.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonHide.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonLayout.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonStyle.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiDarkmode.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiResponsive.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.specialSearch.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" type="text/css" href="./_mw_/site.styles.css">
<link rel="stylesheet" type="text/css" href="./_mw_/noscript.css">
<link rel="stylesheet" type="text/css" href="./_res_/footer.css">
<link rel="stylesheet" type="text/css" href="./_res_/vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-SQLAlchemy rootpage-SQLAlchemy skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">SQLAlchemy</span></h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="contentSub">
<div id="mw-content-subtitle"></div>
</div>
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="de" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="de" dir="ltr"><table class="float-right infobox toccolours toptextcells" style="border-spacing:5px; font-size:90%; text-align:left; width:21em;">

<tbody><tr>
<th colspan="2" class="hintergrundfarbe6" style="font-size:105%; text-align:center;">SQLAlchemy
</th></tr>
<tr>
<th colspan="2" class="hintergrundfarbe5" style="font-size:105%; text-align:center;">Basisdaten
<p class="mw-empty-elt">
</p>
</th></tr>
<tr>
<td><b>Aktuelle&nbsp;<a href="Version_(Software)" title="Version (Software)">Version</a></b>
</td>
<td>2.0.29 <br> (23.&nbsp;März 2024)
</td></tr>
<tr>
<td><b><a href="Betriebssystem" title="Betriebssystem">Betriebssystem</a></b>
</td>
<td><a href="Plattformunabh%C3%A4ngigkeit" title="Plattformunabhängigkeit">plattformunabhängig</a>
</td></tr>
<tr>
<td><b><a href="Programmiersprache" title="Programmiersprache">Programmier­sprache</a></b>
</td>
<td><a href="Python_(Programmiersprache)" title="Python (Programmiersprache)">Python</a>
</td></tr>
<tr>
<td><b>Kategorie</b>
</td>
<td><a href="Objektrelationale_Abbildung" title="Objektrelationale Abbildung">ORM</a>
</td></tr>
<tr>
<td><b>Lizenz</b>
</td>
<td><a href="MIT-Lizenz" title="MIT-Lizenz">MIT-Lizenz</a>
</td></tr>
<tr>
<td class="hintergrundfarbe5" colspan="2" style="text-align:center;"><a rel="nofollow" class="external text" href="http://www.sqlalchemy.org/">www.sqlalchemy.org</a>
</td></tr></tbody></table>
<p><b>SQLAlchemy</b> ist ein <a href="Open_Source" title="Open Source">Open-Source</a>-<a href="SQL" title="SQL">SQL</a>-<a href="Toolkit" title="Toolkit">Toolkit</a> und <a href="Objektrelationale_Abbildung" title="Objektrelationale Abbildung">ORM</a>-<a href="Framework" title="Framework">Framework</a> für die Programmiersprache <a href="Python_(Programmiersprache)" title="Python (Programmiersprache)"> Python</a> mit dem Ziel, den <a href="Object-relational_impedance_mismatch" title="Object-relational impedance mismatch">Object-relational impedance mismatch</a> in der Art von <a href="Hibernate_(Framework)" title="Hibernate (Framework)">Javas Hibernate</a> zu umschiffen. SQLAlchemy wurde im Februar 2006 veröffentlicht.
</p><p>SQLAlchemy bietet eine Reihe von <a href="Entwurfsmuster" title="Entwurfsmuster">Entwurfsmustern</a> zur effizienten Persistenzhaltung von Daten in einer <a href="Relationale_Datenbank" title="Relationale Datenbank">relationalen Datenbank</a>. Die Motivation hinter SQLAlchemy ist darin begründet, dass SQL-Datenbanken umso weniger Objektsammlungen ähneln, je umfangreicher der Datenbestand und je mehr Leistung gefragt ist, während Objektsammlungen sich weniger wie Relationen und Tupel verhalten, je mehr zwischen Datenrepräsentation und Miniwelt abstrahiert wird. Daher verfolgt SQLAlchemy primär ein <a href="Mapper_(Softwareentwicklung)" title="Mapper (Softwareentwicklung)">Data Mapper-Muster</a> anstelle eines sogenannten <i><a href="Active_Record" title="Active Record">Active Record</a></i>-Musters. Optionale Plugins ermöglichen weitere Muster, z.&nbsp;B. mit Elixir eine deklarative Syntax.
</p>

<div class="mw-heading mw-heading2"><h2 id="Beispiel">Beispiel</h2></div>
<p>Erzeugung einer M:N-Beziehung (Autorschaft) zwischen Buch und Autor (ohne <code>imports</code>):
</p>
<div class="mw-highlight mw-highlight-lang-python mw-content-ltr" dir="ltr"><pre><span></span><span class="n">Base</span> <span class="o">=</span> <span class="n">declarative_base</span><span class="p">()</span>

<span class="n">engine</span> <span class="o">=</span> <span class="n">sqlalchemy</span><span class="o">.</span><span class="n">create_engine</span><span class="p">(</span><span class="s1">'postgres://user:pwd@host/dbname'</span><span class="p">,</span> <span class="n">echo</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>

<span class="n">autorschaft</span> <span class="o">=</span> <span class="n">Table</span><span class="p">(</span><span class="s1">'buch_autor'</span><span class="p">,</span> <span class="n">Base</span><span class="o">.</span><span class="n">metadata</span><span class="p">,</span>
<span class="n">Column</span><span class="p">(</span><span class="s1">'isbn'</span><span class="p">,</span> <span class="n">Integer</span><span class="p">,</span> <span class="n">ForeignKey</span><span class="p">(</span><span class="s1">'buch.isbn'</span><span class="p">)),</span>
<span class="n">Column</span><span class="p">(</span><span class="s1">'kennung'</span><span class="p">,</span> <span class="n">Integer</span><span class="p">,</span> <span class="n">ForeignKey</span><span class="p">(</span><span class="s1">'autor.kennung'</span><span class="p">))</span>
<span class="p">)</span>

<span class="k">class</span><span class="w"> </span><span class="nc">Buch</span><span class="p">(</span><span class="n">Base</span><span class="p">):</span>
<span class="n">__tablename__</span> <span class="o">=</span> <span class="s1">'buch'</span>

<span class="n">isbn</span> <span class="o">=</span> <span class="n">Column</span><span class="p">(</span><span class="n">Integer</span><span class="p">,</span> <span class="n">primary_key</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="n">titel</span> <span class="o">=</span> <span class="n">Column</span><span class="p">(</span><span class="n">String</span><span class="p">(</span><span class="mi">255</span><span class="p">),</span> <span class="n">nullable</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
<span class="n">klappentext</span> <span class="o">=</span> <span class="n">Column</span><span class="p">(</span><span class="n">Text</span><span class="p">)</span>

<span class="n">autoren</span> <span class="o">=</span> <span class="n">relationship</span><span class="p">(</span><span class="n">Autor</span><span class="p">,</span> <span class="n">secondary</span><span class="o">=</span><span class="n">autorschaft</span><span class="p">,</span> <span class="n">backref</span><span class="o">=</span><span class="s1">'buecher'</span><span class="p">)</span>

<span class="k">class</span><span class="w"> </span><span class="nc">Autor</span><span class="p">(</span><span class="n">Base</span><span class="p">):</span>
<span class="n">__tablename__</span> <span class="o">=</span> <span class="s1">'autor'</span>

<span class="n">kennung</span> <span class="o">=</span> <span class="n">Column</span><span class="p">(</span><span class="n">String</span><span class="p">(</span><span class="mi">32</span><span class="p">),</span> <span class="n">primary_key</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="n">name</span> <span class="o">=</span> <span class="n">Column</span><span class="p">(</span><span class="n">String</span><span class="p">(</span><span class="mi">50</span><span class="p">),</span> <span class="n">nullable</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">unique</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>

<span class="n">Base</span><span class="o">.</span><span class="n">metadata</span><span class="o">.</span><span class="n">create_all</span><span class="p">(</span><span class="n">engine</span><span class="p">)</span>
</pre></div>
<div class="mw-heading mw-heading2"><h2 id="Unterstützte_Datenbanken"><span id="Unterst.C3.BCtzte_Datenbanken"></span>Unterstützte Datenbanken</h2></div>
<p>SQLAlchemy unterstützt eine Vielzahl von <a href="Liste_der_Datenbankmanagementsysteme" title="Liste der Datenbankmanagementsysteme">Datenbankmanagementsystemen</a>:
</p>
<ul><li><a href="Informix" title="Informix">Informix IDS</a></li>
<li><a href="DB2" class="mw-redirect" title="DB2">DB2</a></li>
<li>Drizzle</li>
<li><a href="Firebird_(Datenbank)" title="Firebird (Datenbank)">Firebird</a></li>
<li><a href="SAP_MaxDB" title="SAP MaxDB">SAP MaxDB</a></li>
<li><a href="Microsoft_Access" title="Microsoft Access">Microsoft Access</a></li>
<li><a href="Microsoft_SQL_Server" title="Microsoft SQL Server">Microsoft SQL Server</a></li>
<li><a href="MySQL" title="MySQL">MySQL</a></li>
<li><a href="Oracle_(Datenbanksystem)" title="Oracle (Datenbanksystem)">Oracle Database</a></li>
<li><a href="PostgreSQL" title="PostgreSQL">PostgreSQL</a></li>
<li><a href="SQLite" title="SQLite">SQLite</a></li>
<li><a href="Sybase#Datenbankmanagement" title="Sybase">Sybase ASE</a></li></ul>
<div class="mw-heading mw-heading2"><h2 id="Siehe_auch">Siehe auch</h2></div>
<ul><li><a href="Django_(Framework)" title="Django (Framework)">Django</a> (Python Web Framework inkl. ORM)</li>
<li><a href="Hibernate_(Framework)" title="Hibernate (Framework)">Hibernate</a> (Java ORM)</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Literatur">Literatur</h2></div>
<ul><li>Mark Ramm, Michael Bayer: SQLAlchemy: <i>Database Access Using Python</i>, <a href="Addison-Wesley" title="Addison-Wesley">Addison-Wesley</a>, 2010, ISBN 978-0-13-236467-6</li>
<li>Rick Copeland: <i>Essential SQLAlchemy</i>, <a href="O%E2%80%99Reilly_Verlag" title="O’Reilly Verlag">O’Reilly</a>, 2008, ISBN 0-596-51614-2</li>
<li>Jeremy Jones, Noah Gift: <i>Python for Unix and Linux System Administration</i>, <a href="O%E2%80%99Reilly_Verlag" title="O’Reilly Verlag">O’Reilly</a>, 2008, ISBN 978-0-596-51582-9</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Weblinks">Weblinks</h2></div>
<ul><li><a rel="nofollow" class="external text" href="http://www.sqlalchemy.org/">SQLAlchemy Homepage</a></li>
<li><a rel="nofollow" class="external text" href="http://www.sqlalchemy.org/docs/04/plugins.html">SQLAlchemy Plugins</a></li>
<li><a rel="nofollow" class="external text" href="http://docs.sqlalchemy.org/en/rel_1_0/core/engines.html">SQLAlchemy Liste unterstützter Datenbanksysteme</a></li></ul></div><!--htdig_noindex--><div><div class="zim-footer">
Dieser Artikel wurde von <a class="external text" title="Zuletzt bearbeitet am 2024-04-04" href="https://de.wikipedia.org/wiki/?title=SQLAlchemy&amp;oldid=243741560">Wikipedia</a> herausgegeben. Der Text ist unter <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.de">Creative Commons Attribution-Share Alike 4.0</a> verfügbar, sofern nicht anders angegeben. Für die Mediendateien können zusätzliche Bedingungen gelten.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
<script src="./_webp_/webpHandler.js"></script>

</body></html>